This invention relates generally to a network processing device and more particularly to a system for dynamically allocating resources in the network processing device.
A network processing device is any computer system that communicates over a network. The network processing device can be a personal computer (PC), network server, portable palm computer, router, etc. For simplicity, the phrase xe2x80x9cnetwork processing devicexe2x80x9d is used interchangeably below with the phrase xe2x80x9chost computer.xe2x80x9d
A portion of memory in a host computer is allocated to transmitting and receiving packets over a network. This portion of memory is referred to generally as network memory, or network resources. A predetermined amount of network memory is permanently allocated at host computer bootup for receiving packets over the network. When the host computer has data ready for transmitting, a protocol stack requests allocation for some portion of the remaining network memory. Network control software then manages and allocates the remaining network memory for transmitting packets over the network. One example of commercially available network control software uses event control blocks (ECBs) to allocate network memory to different transmit tasks in a host computer.
Current network control software does not efficiently allocate network resources. For example, some network resources are dedicated to only one specific transmit or receive task. For example, a predetermined amount of network resources are dedicated to receiving packets when the host computer drivers are loaded. These network resources are under utilized when that transmit or receive task is not currently being performed.
The network control software also allocates network memory on a first come-first serve basis. Software applications that need to transfer data over the network either fail or are delayed if network memory has already been allocated to other software applications.
All available memory resources can also be allocated to one or more small network tasks that only require a small portion of the network memory. Other larger tasks that require a substantially larger amount of the network resources, but request network resources after the smaller network tasks, are either denied network memory allocation or are not allocated enough resources to perform network tasks efficiently.
According, a need remains for more effectively managing and allocating network resources in a network processing device.
Network resources are dynamically allocated in a network processing device. An amount of the network resources are allocated for receiving data in the network processing device and an amount of the network resources are allocated for transmitting data from the network processing device. Network traffic patterns are then monitored in the network processing device. The amount of network resources previously allocated for receiving data and transmitting data are dynamically reallocated according to the monitored network traffic patterns.
The foregoing and other objects, features and advantages of the invention will become more readily apparent from the following detailed description of a preferred embodiment of the invention, which proceeds with reference to the accompanying drawings.